Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: merry   发起时间: 2009-06-03 22:08 下午   回复: 5

Print Search
帖子排序:    
   2009-06-03, 22:08 下午
merryzhao 离线,最后访问时间: 2017/2/21 12:41:06 merry

发帖数前25位
注册: 2008-09-26
发 贴: 61
请问函数kifastsystemcallret的作用
Reply Quote

系统调用过函数kifastsystemcall后,在栈中会看到函数kifastsystemcallret,我原以为这个函数应包含sysexit指令,没想到却是ret指令。

lkd> u ntdll!kifastsystemcallret
ntdll!KiFastSystemCallRet:
7c92eb94 c3              ret

Q:请问这是什么原因?谢谢!


IP 地址: 已记录   报告
   2009-06-03, 22:19 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 请问函数kifastsystemcallret的作用
Reply Quote
这是从内核态回到用户态的着陆点,此时已经回到了用户态,ret是回到用户态的父函数。
IP 地址: 已记录   报告
   2009-06-03, 23:18 下午
merryzhao 离线,最后访问时间: 2017/2/21 12:41:06 merry

发帖数前25位
注册: 2008-09-26
发 贴: 61
Re: 请问函数kifastsystemcallret的作用
Reply Quote

Quote:  ret是回到用户态的父函数

 ret应该是回到用户态ntdll导出的函数, 对吗?

另外,请问指令sysexit是由什么函数调用?


IP 地址: 已记录   报告
   2009-06-04, 00:09 上午
Thomson 离线,最后访问时间: 2013/3/31 11:42:42 Thomson

发帖数前10位
注册: 2008-07-03
发 贴: 211
Re: 请问函数kifastsystemcallret的作用
Reply Quote
ntdll!kifastsystemcallret只是一个ntdll里面的一个symbol,这个symbol指向了ntdll!kifastsystemcall这个function的最后一条指令(ret)吧.它和ntdll!kifastsystemcall+offset是等价的.

sysexit是在kernel里面退出system call的时候调用,相当于原来的iret.

IP 地址: 已记录   报告
   2009-06-07, 18:12 下午
merryzhao 离线,最后访问时间: 2017/2/21 12:41:06 merry

发帖数前25位
注册: 2008-09-26
发 贴: 61
Re: 请问函数kifastsystemcallret的作用
Reply Quote

 可以看出指令sysenter是由系统的KiFastSystemCall函数的调用的,
ntdll!KiFastSystemCall:
7c92eb8b 8bd4            mov     edx,esp
7c92eb8d 0f34            sysenter

Q:指令sysexit是由系统的什么函数调用的?

 ps.我试着在反汇编native api函数,但没有看到这个指令被调用。


IP 地址: 已记录   报告
   2009-06-07, 21:21 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 请问函数kifastsystemcallret的作用
Reply Quote
lkd> u nt!KiSystemCallExit2 l9
nt!KiSystemCallExit2:
8053cccd f644240901 test byte ptr [esp+9],1
8053ccd2 75f8 jne nt!KiSystemCallExit (8053cccc)
8053ccd4 5a pop edx
8053ccd5 83c404 add esp,4
8053ccd8 80642401fd and byte ptr [esp+1],0FDh
8053ccdd 9d popfd
8053ccde 59 pop ecx
8053ccdf fb sti
8053cce0 0f35 sysexit
IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » 请问函数kifastsystemcallret的作用

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.